package com.heima.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.common.comment.dtos.CommentManagePageDto;
import com.heima.model.common.dtos.*;
import com.heima.model.common.pojos.article.ApArticle;

import java.util.Date;
import java.util.Map;

/**
 * @author 陈辉
 * @data 2024 9:49
 */
public interface ApArticleService extends IService<ApArticle> {

    /**
     * 加载文章信息
     *
     * @param homeDto 查询条件
     * @param type 1：加载更多 2：加载更新
     * @return
     */
    ResponseResult load(ArticleHomeDto homeDto, int type);

    /**
     * 保存或修改文章信息
     *
     * @param articleDto
     * @return
     */
    ResponseResult saveOrUpdateArticle(ArticleDto articleDto);

    /**
     * 文章上下架
     *
     * @param map
     */
    void downOrUp(Map map);

    ResponseResult getArticleInfo(Long entryId);

    /**
     * 用户收藏文章
     *
     * @param behaviorDto
     * @return
     */
    ResponseResult collectionBehavior(CollectionBehaviorDto behaviorDto, String userId);

    /**
     * 加载文章行为-数据回显
     *
     * @param infoDto
     * @param userId
     * @return
     */
    ResponseResult loadArticleBehavior(ArticleInfoDto infoDto, String userId);

    /**
     * 分页查询当前作者的文章数据
     * @param beginDate
     * @param endDate
     * @param page
     * @param size
     * @return
     */
    PageResponseResult newPage(Date beginDate, Date endDate, Integer page, Integer size,Integer id);

    /**
     * 更改文章评论状态
     * @param statusDto
     * @return
     */
    ResponseResult updateArticleCommentStatus(CommentUpdateStatusDto statusDto);

    /**
     * 查询符合条件的文章
     * @param commentDto
     * @return
     */
    PageResponseResult findList(CommentManagePageDto commentDto);

    /**
     * 同步评论数量
     * @param map
     */
    void comment(Map map);

    /**
     * 点赞/取消点赞
     *
     * @param map
     */
    void like(Map map);

    /**
     * 用户阅读
     *
     * @param map
     */
    void read(Map map);

    /**
     * 定时计算热点文章
     */
    void computeHotArticle();

    /**
     * 首页加载热点文章
     * @param homeDto
     * @param loadtypeLoadIndex
     * @return
     */
    ResponseResult loadHotArticle(ArticleHomeDto homeDto, int loadtypeLoadIndex);
}
